﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using UricaoWeb.LogicaDeNegocios.Propiedad;
using UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles;
using System.Configuration;


namespace UricaoWeb.Presentacion
{
	public partial class API_propiedades_EliminarHabitacion : API_Seguridad_Principal
	{
		protected void Page_Load(object sender, EventArgs e)
		{
            var master = Master as MasterPage;
            if (master != null)
            {
                master.actualizar_label();
            }
            base.validar_usuario();
			if (!IsPostBack)
			{
				botonCancelar2.Visible = false;
				//LlenarCBHoteles();
				EsconderDropListsYLabels();
			}
			else
			{
				MostrarDropListsYLabels();

			}
		}

		#region FUNCIONES DE UTILIDAD
		private void EliminarItemsDropList(DropDownList droplist)
		{			
			int contadoritems = 0;

			while ((contadoritems = droplist.Items.Count) > 1)
			{
				droplist.Items.Remove(droplist.Items[contadoritems-1]);
				contadoritems--;
			}

		}

        protected void gridHabitaciones1_PageIndexChanged(object sender, GridViewPageEventArgs e)
        {
            LogicaPropiedades _filtrado = new LogicaPropiedades();
            this.gridHabitaciones1.PageIndex = e.NewPageIndex;

            if (CBlistaHabitaciones.SelectedIndex != 0)
            {
                gridHabitaciones1.DataSource = _filtrado.filtrarPorNumeroHabitacion(CBlistaHabitaciones.SelectedValue, CBlistaHoteles.SelectedValue);
                gridHabitaciones1.DataBind();
            }
            if (CBlistaHabsTipo.SelectedIndex != 0)
            {
                gridHabitaciones1.DataSource = _filtrado.filtrarPorTipoHabitacion(CBlistaHabsTipo.SelectedValue, CBlistaHoteles.SelectedValue);
                gridHabitaciones1.DataBind();
            }
            if (CBpisoHabitacion.SelectedIndex != 0)
            {
                gridHabitaciones1.DataSource = _filtrado.filtrarPorPisoHabitacion(CBpisoHabitacion.SelectedValue, CBlistaHoteles.SelectedValue);
                gridHabitaciones1.DataBind();
            }
        }

		private Boolean LlenarDropListsAfterEliminarRequest()
		{
			if (CBpisoHabitacion.SelectedIndex != 0)
			{
				LlenarGridPorNumeroHabitacion(CBlistaHoteles.SelectedValue.ToString(), "0");
				return true;
			}
			if (CBlistaHabsTipo.SelectedIndex != 0)
			{
				LlenarGridPorTipoHabitacion(CBlistaHoteles.SelectedValue.ToString(), CBlistaHabsTipo.SelectedItem.ToString());
				return true;
			}
			if (CBpisoHabitacion.SelectedIndex != 0)
			{
				LlenarGridPorPisoHabitacion(CBlistaHoteles.SelectedValue.ToString(), CBpisoHabitacion.SelectedValue.ToString());
				return true;
			}

			return false;
		}

		private void EsconderDropListsYLabels()
		{
			//LnumeroHabitacion.Visible = false;
			//LTipoHabitacion.Visible = false;
			//LPisoHabitacion.Visible = false;
			//CBpisoHabitacion.Visible = false;
			//CBlistaHabitaciones.Visible = false;
			//CBlistaHabsTipo.Visible = false;
		}

		private void MostrarDropListsYLabels()
		{
			LnumeroHabitacion.Visible = true;
			LTipoHabitacion.Visible = true;
			LPisoHabitacion.Visible = true;
			CBpisoHabitacion.Visible = true;
			CBlistaHabitaciones.Visible = true;
			CBlistaHabsTipo.Visible = true;
		}

		private void ResetElementos()
		{
			CBlistaHabitaciones.SelectedIndex = 0;
			CBpisoHabitacion.SelectedIndex = 0;
			CBlistaHabsTipo.SelectedIndex = 0;
			botonCancelar2.Visible = true;
			botonCancelar.Visible = false;
		}
		#endregion

		#region LLENADO DE DROPLISTS
		protected void CBlistaHoteles_Init(object sender, EventArgs e)
		{
			Logica_Usuario _seguridad = (Logica_Usuario)Session["user"];
			Session["idHotel"] = LogicaPropiedades._idHotel;
			LlenarCBHoteles();
			SeleccionarCBHotelIndex();

		}

		private void SeleccionarCBHotelIndex()
		{
			int contadorIndices = CBlistaHoteles.Items.Count - 1;
			CBlistaHoteles.Enabled = false;

			while (contadorIndices >= 0)
			{
				CBlistaHoteles.SelectedIndex = contadorIndices;
				if (CBlistaHoteles.SelectedValue.ToString() == Session["idHotel"].ToString())
				{
					CBlistaHoteles.SelectedIndex = contadorIndices;
					break;
				}
				contadorIndices--;
			}

			EliminarItemsDropList(CBlistaHabitaciones);
			EliminarItemsDropList(CBlistaHabsTipo);
			EliminarItemsDropList(CBpisoHabitacion);

			LlenarCBNumeroHabitaciones(Convert.ToInt32(LogicaPropiedades._idHotel));
			LlenarCBTipoHabitacion(Convert.ToInt32(LogicaPropiedades._idHotel));
			LlenarCBPisoHabitaciones(Convert.ToInt32(LogicaPropiedades._idHotel));
			MostrarDropListsYLabels();
		}

		private void LlenarCBHoteles()
		{
			LogicaPropiedades _getHoteles = new LogicaPropiedades();
			CBlistaHoteles.DataSource = _getHoteles.GetAllHoteles();
			CBlistaHoteles.DataBind();
		}

		private void LlenarCBNumeroHabitaciones(int _idHotel)
		{
			LogicaPropiedades _getNumHabitaciones = new LogicaPropiedades();
			CBlistaHabitaciones.DataSource = _getNumHabitaciones.GetHabitaciones(_idHotel);
			CBlistaHabitaciones.DataBind();
		}

		private void LlenarCBTipoHabitacion(int _idHotel)
		{
			LogicaPropiedades _getHabitacionesTipo = new LogicaPropiedades();
			CBlistaHabsTipo.DataSource = _getHabitacionesTipo.HabitacionesPorTipo(_idHotel);
			CBlistaHabsTipo.DataBind();
		}

		private void LlenarCBPisoHabitaciones(int _idHotel)
		{
			LogicaPropiedades _getHabitacionesPorPiso = new LogicaPropiedades();
			CBpisoHabitacion.DataSource = _getHabitacionesPorPiso.HabitacionesPorPiso(_idHotel);
			CBpisoHabitacion.DataBind();
		}

		private void RecargarTodosCB(int _idHotel)
		{
			LlenarCBNumeroHabitaciones(_idHotel);
			LlenarCBPisoHabitaciones(_idHotel);
			LlenarCBTipoHabitacion(_idHotel);
		}
		#endregion

		#region LLENADO DE GRIDVIEW
		private void LlenarGridPorNumeroHabitacion(string _idHotel, string _idHabitacion)
		{
			LogicaPropiedades filtrado = new LogicaPropiedades();
			gridHabitaciones1.DataSource = filtrado.filtrarPorNumeroHabitacion(_idHabitacion, _idHotel);
			gridHabitaciones1.DataBind();
		}

		private void LlenarGridPorTipoHabitacion(string _idHotel, string _tipoHabitacion)
		{
			LogicaPropiedades _porTipoHabitacion = new LogicaPropiedades();
			gridHabitaciones1.DataSource = _porTipoHabitacion.filtrarPorTipoHabitacion(_tipoHabitacion, _idHotel);
			gridHabitaciones1.DataBind();
		}

		private void LlenarGridPorPisoHabitacion(string _idHotel, string _numeroPiso)
		{
			LogicaPropiedades _porPisoHabitacion = new LogicaPropiedades();
			gridHabitaciones1.DataSource = _porPisoHabitacion.filtrarPorPisoHabitacion(_numeroPiso, _idHotel);
			gridHabitaciones1.DataBind();
		}
		#endregion

		#region CAMBIO DE INDICES
		protected void CBlistaHoteles_SelectedIndexChanged(object sender, EventArgs e)
		{
			MostrarDropListsYLabels();
			if (CBlistaHabitaciones.SelectedIndex == 0)
			{
				botonCancelar2.Visible = true;
				botonCancelar.Visible = false;
			}
			if (!IsPostBack)
			{
				LlenarCBNumeroHabitaciones(CBlistaHoteles.SelectedIndex);
				LlenarCBTipoHabitacion(CBlistaHoteles.SelectedIndex);
				LlenarCBPisoHabitaciones((CBlistaHoteles.SelectedIndex));
			}
			else
			{
				if (CBlistaHoteles.SelectedValue == "0")
				{
					EsconderDropListsYLabels();
					ResetElementos();
				}
				else
				{
					EliminarItemsDropList(CBlistaHabitaciones);
					EliminarItemsDropList(CBlistaHabsTipo);
					EliminarItemsDropList(CBpisoHabitacion);

					LlenarCBNumeroHabitaciones(CBlistaHoteles.SelectedIndex);
					LlenarCBTipoHabitacion(CBlistaHoteles.SelectedIndex);
					LlenarCBPisoHabitaciones((CBlistaHoteles.SelectedIndex));
				}

			}
		}

		protected void CBlistaHabitaciones_SelectedIndexChanged(object sender, EventArgs e)
		{
			CBlistaHabsTipo.SelectedIndex = 0;
			CBpisoHabitacion.SelectedIndex = 0;
			if (!IsPostBack)
			{
				CBlistaHoteles.DataBind();
				LlenarGridPorNumeroHabitacion(CBlistaHoteles.SelectedValue.ToString(), CBlistaHabitaciones.SelectedValue.ToString());
			}
			else
			{
				LlenarGridPorNumeroHabitacion(CBlistaHoteles.SelectedValue.ToString(), CBlistaHabitaciones.SelectedValue.ToString());
			}
			if (CBlistaHabitaciones.SelectedIndex == 0)
			{
				botonCancelar2.Visible = true;
				botonCancelar.Visible = false;
			}
			else
			{
				botonCancelar2.Visible = false;
				botonCancelar.Visible = true;
			}
		}

		protected void CBlistaHabsTipo_SelectedIndexChanged(object sender, EventArgs e)
		{
			CBpisoHabitacion.SelectedIndex = 0;
			CBlistaHabitaciones.SelectedIndex = 0;
			botonCancelar2.Visible = false;
			botonCancelar.Visible = true;
			if (!IsPostBack)
			{
				CBlistaHoteles.DataBind();
				LlenarGridPorTipoHabitacion(CBlistaHabsTipo.SelectedValue.ToString(), CBlistaHoteles.SelectedValue.ToString());
			}
			else
			{
				LlenarGridPorTipoHabitacion(CBlistaHoteles.SelectedValue.ToString(), CBlistaHabsTipo.SelectedValue.ToString());
			}
			if (CBlistaHabsTipo.SelectedIndex == 0)
			{
				botonCancelar2.Visible = true;
				botonCancelar.Visible = false;
			}
			else
			{
				botonCancelar2.Visible = false;
				botonCancelar.Visible = true;
			}
		}

		protected void CBpisoHabitacion_SelectedIndexChanged(object sender, EventArgs e)
		{
			CBlistaHabitaciones.SelectedIndex = 0;
			CBlistaHabsTipo.SelectedIndex = 0;
			botonCancelar2.Visible = false;
			botonCancelar.Visible = true;
			if (!IsPostBack)
			{
				CBlistaHoteles.DataBind();
				LlenarGridPorPisoHabitacion(CBlistaHoteles.SelectedValue.ToString(), CBpisoHabitacion.SelectedValue.ToString());
			}
			else
			{
				LlenarGridPorPisoHabitacion(CBlistaHoteles.SelectedValue.ToString(), CBpisoHabitacion.SelectedValue.ToString());
			}
			if(CBpisoHabitacion.SelectedIndex == 0)
			{
				botonCancelar2.Visible = true;
				botonCancelar.Visible = false;
			}
			else
			{
				botonCancelar2.Visible = false;
				botonCancelar.Visible = true;
			}
		}
		#endregion

		#region ELIMINACION DE ELEMENTO
		protected void gridHabitaciones1_RowDeleting(object sender, GridViewDeleteEventArgs e)
		{
			LogicaPropiedades _borrarRegistro = new LogicaPropiedades();
			string _disponibilidad = gridHabitaciones1.Rows[e.RowIndex].Cells[3].Text;
			string _idHabitacion = gridHabitaciones1.DataKeys[e.RowIndex].Values["IdHabitacion"].ToString();
			Boolean _eliminado = false;
			if (_disponibilidad == "True")
			{
				_eliminado = _borrarRegistro.EliminarRegistroHabitacion(_idHabitacion);

				if (LlenarDropListsAfterEliminarRequest() && _eliminado)
				{
					string _alerta = "alert('Habitacion eliminada apropiadamente');";
					ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "alert", _alerta, true);
				}
			}
			else
			{
				string _alerta = "alert('No puede eliminar habitaciones que no esten disponibles')";
				ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "AlertScript",_alerta, true);
			}
			
			EliminarItemsDropList(CBlistaHabitaciones);
			EliminarItemsDropList(CBlistaHabsTipo);
			EliminarItemsDropList(CBpisoHabitacion);
			RecargarTodosCB(Convert.ToInt32(CBlistaHoteles.SelectedValue));
			gridHabitaciones1.DataBind();
		}
		#endregion

	}
}